Typing text on small physical or virtual keyboards is difficult and can be frustrating for users. Existing systems use touch models to correlate various contact areas or touch points with particular intended characters and to resize particular keys. For example, the user may consistently press one side of the “a” character rather than the center of the “a” character. The touch model then correlates that portion of the “a” character with an intended “a” press. To perform accurately, the touch models require sufficient input data from the user for training. Existing systems for improving touch models, however, focus on training the user to alter key press locations by advancing through a series of characters only when the user presses the correct character. Further, the existing systems generally fail to identify particular areas of improvement for the user.